Agent 网关
前置:写过一次调用大模型 API 的代码。不需要用过任何网关产品,也不需要懂 Kubernetes。
本专题回答:这一层到底替你挡掉了什么,自建还是买现成的,以及它自己要多花多少毫秒。
你的代码里现在大概有这么一行:model="gpt-4o",后面跟着一个写死的 API Key。
它能跑。直到有一天你想接第二家供应商 —— 于是发现两家的请求体长得完全不一样;直到有一天第一家挂了十分钟 —— 于是你想自动切到第二家;直到财务问起哪个团队花了多少钱 —— 于是你发现账单上只有一个总数。
每加一个这样的需求,你就往调用模型的那段代码里塞一段判断。塞到第六个的时候,那段代码已经和业务没什么关系了,它变成了一个专门负责「怎么把请求送出去」的东西。把它从业务里搬出来单独跑,就是这个专题说的网关。
01 篇会带着你把这个过程完整走一遍:从 五行代码起步,一个需求一个需求地加,看它怎么长成下面这六件事。
一、网关处理的六件事
这六项不是谁设计出来的,是每个把大模型用到一定规模的团队都会重新实现一遍的东西。
1.1 图里这六个词的意思
第一次读这张图,有六个词会挡路。先给出够用的定义,正文各篇再展开:
| 词 | 意思 | 哪一篇细讲 |
|---|---|---|
| provider | 提供模型 API 的一方,比如 OpenAI、Anthropic、Bedrock、通义。它们的接口两两不同,这正是①要抹平的东西 | 01 |
| fallback(兜底) | 首选后端失败时自动改调另一个,业务代码不感知。注意它治的是「这一次调用」,不是「这个任务」 | 03 |
| 熔断 | 某个后端连续失败到一定次数后,网关暂时不再往它发请求,冷却一段时间再试。防的是把请求持续喂给一个已经挂了的后端 | 03 |
| 虚拟密钥 | 网关自己签发的一套 key。真实的 provider key 只有网关持有,业务方拿到的是虚拟 key,key 上绑着团队、配额和可用模型范围 | 04 |
| 配额 | 给某个团队或某把 key 设的用量上限,可按请求数、token 数或美元数计。超了就拒绝或降级 | 04 |
| MCP | Model Context Protocol,Anthropic 2024 年底提出、现已成为事实标准的一套协议,规定 Agent 怎么发现和调用外部工具。它对工具的意义,相当于 HTTP 对网页的意义 | 05 |
二、四个开源实现的形态差异
四个拆解对象分属四种部署形态。形态指的不是功能多少,而是网关代码到底跑在谁的进程里 —— 这一件事决定了它能不能独立升级、崩了会不会带崩业务、每次调用要多付多少延迟:
2.1 图里这四个词的意思
| 词 | 意思 |
|---|---|
| GIL | Global Interpreter Lock,CPython 的全局解释器锁。同一时刻只允许一个线程执行 Python 字节码,所以纯 Python 服务很难靠多线程吃满多核。这是 LiteLLM 作为库嵌进业务进程时最主要的性能天花板 |
| ext_proc | External Processing,Envoy 的一种扩展方式。Envoy 把请求通过 gRPC 外发给一个独立进程处理,拿回结果再继续转发。好处是扩展逻辑用什么语言写都行,代价是每次调用多一次进程间通信 |
| CRD | Custom Resource Definition,Kubernetes 的自定义资源。有了它,配置网关就变成「写一段 YAML apply 上去」,和配置 Deployment、Service 是同一套操作方式 |
| proxy-wasm 沙箱 | 一套让 WebAssembly 模块跑在代理内部的规范。插件被编译成 Wasm 字节码,装在网关进程里的沙箱中运行 —— 能热插拔、崩了不带崩网关,但只能通过规范开放的那些接口和外界打交道,做不了任意系统调用 |
三、正文构成
| # | 标题 | 读完能回答的问题 |
|---|---|---|
| 01 | 网关是什么 | 我到底需不需要这个东西?从五行代码 一路加需求,看它是怎么被逼出来的 |
| 02 | 四种形态 | 它该跑在我的进程里,还是单独起一个服务?这个选择之后要付什么代价 |
| 03 | 路由与容错 | 有五个 key 该怎么轮着用?一家挂了怎么自动切,切的时候怎么不让用户等两遍超时 |
| 04 | 多租户与配额 | 怎么让每个团队只能用自己那份额度,以及为什么「花了多少钱」这件事只能事后算 |
| 05 | MCP 网关 | 十几个 MCP 工具怎么统一管起来,怎么做到「这个 Agent 只准调这三个工具」 |
| 06 | 缓存 | 很多人问的是同一个问题,能不能不真调模型?以及「意思差不多」的缓存什么时候会答错人 |
| 07 | Token 速率与 QoS | 大客户嫌吐字慢,怎么给他留一条更快的通道 |
| 08 | 云厂商怎么做 | 阿里云 · AWS · 华为云 · 腾讯云 各自把这层做成了什么样,能不能直接买 |
| 09 | 国外托管网关 | Kong · Cloudflare · Azure · Apigee · Vercel · OpenRouter 的能力边界与定价模型 |
| 10 | 性能与 形态代价 | 加了这一层,每次请求多等多久?这个数怎么自己压出来 |
四、拆解对象
4.1 开源实现
| 项目 | ★ | 协议 | 语言 | 选取理由 |
|---|---|---|---|---|
BerriAI/litellm | 56,709 | NOASSERTION | Python | 装机量最大,功能面最全,正在用 Rust 重写内核 |
higress-group/higress | 9,138 | Apache-2.0 | Go | 国内落地最多,Wasm 插件形态的代表 |
agentgateway | 4,419 | Apache-2.0 | Rust | LF 治理,唯一为 MCP / A2A 原生设计 |
envoyproxy/ai-gateway | 1,937 | Apache-2.0 | Go | v1.0 已发布,Envoy 官方,K8s CRD 驱动 |
maximhq/bifrost | 7,414 | Apache-2.0 | Go | 性能对照组 |
Kong(★44,001)与 Traefik(★64,488)star 更高但非 AI 原生,仅在形态对比时引用。
4.2 Portkey 的状态变更
Portkey 曾 是主要的开源 AI 网关之一。Palo Alto Networks 于 2026-04-30 宣布收购、05-29 完成交割,Portkey 成为 Prisma AIRS 的核心 AI 网关。
开源仓库最后一次提交为 2026-05-25,最后一个 release 停在 v1.15.2(2026-01-12)。最后几个提交均为安全修复(redact provider options in logs、disable logs when admin token not set)。
这是开源 AI 网关的第一次大规模整合,也是本专题通向 Agent 安全的衔接点。
五、与其他专题的关系
- Agent Infra 板块总览:本专题在整体架构中的位置
- Agent 安全:网关是主要防线执行点
- Agent 可观测性:网关是成本归因最可靠的口径来源
- vLLM 推理专题 · Prefix Caching:路由决策直接影响后端前缀缓存命中率,06 篇展开
- RAG Agent Platform 项目沉淀:多租户实践对照,04 篇引用